package com.mef.smsplat.eterm;

import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;

import org.apache.commons.io.FileUtils;

import com.hc24.util.DateUtil;
import com.mef.smsplat.eterm.bean.DetrResult;
import com.mef.smsplat.eterm.bean.MlResult;
import com.mef.smsplat.eterm.bean.RtResult;
import com.mef.smsplat.eterm.util.EtermUtil;

public class Ml extends AComm {
	
	public Ml(IEterm eterm){
		super.setEterm(eterm);
	}
	
	/**
	 * 默认提取所有旅客的名单
	 * @param flightNo 航班号
	 * @param date 航班日期  格式yyyy-MM-dd(2013-06-21)
	 * @return
	 */
	public MlResult ml(String flightNo,String date){
		return ml("C", flightNo, date);
	}
	
	/**
	 * 提取旅客名单
	 * @param option 选项
	 * @param flightNo 航班号
	 * @param date 航班日期  格式yyyy-MM-dd(2013-06-21)
	 * @return
	 */
	public MlResult ml(String option,String flightNo,String date){
		StringBuilder sb=new StringBuilder();
		try {
			getEterm().connect();//建立连接
			String etermDate=DateUtil.etermDate(date);
			String content =super.sendCmd("ML:"+option+"/"+flightNo+"/"+etermDate);
			sb.append(content+spliter);
			String lastPn = content;
			//检测收到的结果
			int maxCount = 200;
			while(EtermUtil.checkNeedPn(content) || maxCount<=0)
			{
				maxCount--;
				//发送PN指令
				content=super.sendCmd("PN");
	 
				//判断翻页结果是否还和上次一样，如果一样，则证明翻到底了 
				if(lastPn != null && lastPn.equals(content)) 
					break;
				//如果没有翻到底，则记录下来
				sb.append(content+spliter);
				lastPn = content;
			}
			

		} catch (Exception e) {
			logger.error("发送或接受指令出错",e);
		}finally{
			try {
				getEterm().close();//关闭连接
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		String ret=sb.toString().replaceAll("\\++", "").replaceAll("-", "\r");
		logger.debug("从Eterm返回的结果是：\n"+ret);
		return MlUtil.parseMl(ret);
	}
	
	
	
	public static void main(String[] args) {
		Ml ml=new Ml(new Eterm());
		MlResult result= ml.ml("TV9802", "2013-09-09");
		System.out.println(result);

	}
}
